package projet.sax;

import java.util.ArrayList;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import projet.objetsmetier.Cheque;
import projet.objetsmetier.Client;

/**
 * Cette classe permet la lecture d'un client au format XML.
 * 
 * @author Maxime GOUFFE, Olivia GUIDEZ
 * 
 */
public class ClientSAX extends DefaultHandler {
	private String texte;
	private String idGestionnaire;
	private ArrayList<Client> listeClients;
	private Client client;
	private ArrayList<Cheque> listeCheques;
	private Cheque cheque;

	public void characters(char[] arg0, int arg1, int arg2) throws SAXException {
		texte = new String(arg0, arg1, arg2);
	}

	public void endElement(String arg0, String arg1, String arg2)
			throws SAXException {
		if ("client".equals(arg2)) {
			client.setListCheques(listeCheques);
			listeClients.add(client);
		} else if ("cheque".equals(arg2)) {
			listeCheques.add(cheque);
		} else if ("idGestionnaire".equals(arg2)) {
			idGestionnaire = texte;
		} else if ("montantCompte".equals(arg2)) {
			client.setMontantCompte(Double.parseDouble(texte));
		} else if ("montant".equals(arg2)) {
			cheque.setMontant(Double.parseDouble(texte));
		} else if ("ordre".equals(arg2)) {
			cheque.setOrdre(texte);
		} 
	}

	public void startElement(String arg0, String arg1, String arg2,
			Attributes arg3) throws SAXException {
		if (arg2.equals("clients")) {
			listeClients = new ArrayList<Client>();
		}else if ("montantCompte".equals(arg2)) {
			client.setIdClient(texte);
		}else if ("montant".equals(arg2)) {
			cheque.setIdClient(texte);
		}else if (arg2.equals("client")) {
			client = new Client();
			listeCheques = new ArrayList<Cheque>();
			client.setType(arg3.getValue("type"));
		} else if (arg2.equals("cheque")) {
			cheque = new Cheque();
			cheque.setEmis(Boolean.parseBoolean(arg3.getValue("emis")));
			cheque.setExpedie(Boolean.parseBoolean(arg3.getValue("expedie")));
			cheque.setIdCheque(arg3.getValue("idCheque"));
			cheque.setDevise(arg3.getValue("devise"));
			cheque.setIdGestionnaire(arg3.getValue("idGestionnaire"));
			cheque.setDateEmission(arg3.getValue("dateEmission"));
		}
	}

	public Cheque getCheque() {
		return cheque;
	}

	public void setCheque(Cheque cheque) {
		this.cheque = cheque;
	}

	public String getIdGestionnaire() {
		return idGestionnaire;
	}

	public void setIdGestionnaire(String idGestionnaire) {
		this.idGestionnaire = idGestionnaire;
	}

	public ArrayList<Client> getListeClients() {
		return listeClients;
	}

	public void setListeClients(ArrayList<Client> listeClients) {
		this.listeClients = listeClients;
	}

	public Client getClient() {
		return client;
	}

	public void setClient(Client client) {
		this.client = client;
	}

	public ArrayList<Cheque> getListeCheques() {
		return listeCheques;
	}

	public void setListeCheques(ArrayList<Cheque> listeCheques) {
		this.listeCheques = listeCheques;
	}
}